package com.nd.android.musicboxlibrary.ui.view;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * 
 * <br>
 * Created 2014年9月15日 下午11:06:06
 * 
 * @version
 * @author wat.ztag
 * 
 * @see
 */
public class CropHeadImageView extends ImageView {

    /**
     * Creates a new instance of CropHeadImageView. <br>
     * Created 2014年9月15日 下午11:06:16
     * 
     * @param context Context
     * @param attrs AttributeSet
     * @param defStyle int
     */
    public CropHeadImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    /**
     * Creates a new instance of CropHeadImageView. <br>
     * Created 2014年9月15日 下午11:06:24
     * 
     * @param context Context
     * @param attrs AttributeSet
     */
    public CropHeadImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * Creates a new instance of CropHeadImageView. <br>
     * Created 2014年9月15日 下午11:06:02
     * 
     * @param context Context
     */
    public CropHeadImageView(Context context) {
        super(context);
    }

    @Override
    public void setImageDrawable(Drawable drawable) {
        super.setImageDrawable(drawable);
        setScaleType(ScaleType.CENTER_CROP);
    }

    @SuppressLint("DrawAllocation")
    @Override
    protected void onDraw(Canvas canvas) {
        if (getDrawable() != null) {
            if (getHeight() > 0
                    && getWidth() > 0
                    && getWidth() * getDrawable().getIntrinsicHeight() > getHeight()
                            * getDrawable().getIntrinsicWidth()) {
                Matrix m = new Matrix();
                float scale = ((float) getWidth()) / getDrawable().getIntrinsicWidth();
                m.postScale(scale, scale);
                setScaleType(ScaleType.MATRIX);
                setImageMatrix(m);
            }
        }
        super.onDraw(canvas);
    }

}
